package com.final_不可修改;

public class final细节02 {
    /**1.如果一个类已经是final类，就没必要将方法修饰成final，因为final类不能被继承，自然而然 方法也就不能被重写；*/
    /**2.final不能修饰构造器*/
    /**3.final 和 static 往往搭配使用，效率更高，不会导致类加载，底层编译器做了优化；  看mian方法*/
    /**4.包装类(Integer  Double Float  Boolean String 等都是final类)
     * 比如说DOUble修饰词时final
     * public final class Double extends Number  */


    public static void main(String[] args) {
        System.out.println(BBB.num);
        System.out.println("============================");
        System.out.println(BBB.temp);

    }
}




/**1.如果一个类已经是final类，就没必要将方法修饰成final，因为final类不能被继承，自然而然 方法也就不能被重写；*/
final class AAA{  // final修饰类，不能被继承
    public final void test(){  //final画蛇添足了
        System.out.println("AAA");
    }
}



/**2.final不能修饰构造器*/



/**3.final 和 static 往往搭配使用，效率更高，不会导致类加载，底层编译器做了优化；  看mian方法*/
class BBB{
    public final static int num = 100;  //如果final和static搭配使用，用类名调用属性不会触发类加载
    public static int temp = 100;  //这个调用就会触发类加载

    static{
        System.out.println("BBB静态代码块被加载");  //静态代码块在类加载时执行；
    }
}
